您的位置:首页 > 娱乐 > 八卦 > 人民日报客户端是什么级别_微信小程序怎么关闭未成年模式_长沙seo网站管理_网站优化软件哪个好

人民日报客户端是什么级别_微信小程序怎么关闭未成年模式_长沙seo网站管理_网站优化软件哪个好

2025/1/10 13:23:20 来源:https://blog.csdn.net/libaineu2004/article/details/144764132  浏览:    关键词:人民日报客户端是什么级别_微信小程序怎么关闭未成年模式_长沙seo网站管理_网站优化软件哪个好
人民日报客户端是什么级别_微信小程序怎么关闭未成年模式_长沙seo网站管理_网站优化软件哪个好

使用Qt+OpenCV写一个旋转/抠图/mask生成工具

1、旋转功能

void FormRotate::rotateImage(const cv::Mat &src, cv::Mat &dst, double degree) //旋转
{if (fabs(degree) < 0.001){dst = src;return;}//center旋转的中心点坐标//degree旋转的角度,不是弧度,>0逆时针,<0顺时针//scale图像缩放比例int width = src.cols;int height = src.rows;cv::Point2f center(width / 2, height / 2);cv::Mat M = cv::getRotationMatrix2D(center, degree, 1.0);//旋转,保持分辨率不变,周边涂黑cv::warpAffine(src, dst, M, cv::Size(width, height));
}

 

2、抠图功能

支持roi矩形,框选之后,抠图

    CUtil uti;cv::Rect r = cv::Rect(vtRect[0].x(), vtRect[0].y(), vtRect[0].width(), vtRect[0].height());cv::Rect big = cv::Rect(0, 0, m_matSrc.cols, m_matSrc.rows);if (!uti.isRectInside(r, big)){QMessageBox bbox(QMessageBox::Critical, tr("错误"), QObject::tr("抠图失败!矩形ROI不能在图片范围之外!"));bbox.setButtonText(QMessageBox::Ok, QObject::tr("确定"));bbox.exec();return;}try{cv::Mat crop = m_matSrc(r);QImage image = uti.cvMat2QImage(crop);ui->widget_dst->setImage(image, true);}catch (...){QImage image;ui->widget_dst->setImage(image, true);QMessageBox bbox(QMessageBox::Critical, tr("错误"), QObject::tr("抠图失败!算法异常!"));bbox.setButtonText(QMessageBox::Ok, QObject::tr("确定"));bbox.exec();return;}

 

3、mask生成功能

支持roi矩形,圆形和多边形,指定区域生成mask图片

    int sz3 = (int)vtPy.size(); //多边形for (int k = 0; k < sz3; k++){cv::Mat mask = cv::Mat::zeros(m_matSrc.rows, m_matSrc.cols, m_matSrc.type());std::vector<cv::Point> pp;for (int m = 0; m < vtPy[k].size(); m++){pp.push_back(cv::Point(vtPy[k][m].x(), vtPy[k][m].y()));}cv::fillPoly(mask, pp, cv::Scalar(255, 255, 255));cv::Rect r = cv::boundingRect(pp); //最小外接矩形cv::Rect big = cv::Rect(0, 0, m_matSrc.cols, m_matSrc.rows);if (!uti.isRectInside(r, big)){QMessageBox bbox(QMessageBox::Critical, tr("错误"), QObject::tr("生成mask失败!ROI不能在图片范围之外!"));bbox.setButtonText(QMessageBox::Ok, QObject::tr("确定"));bbox.exec();return;}cv::bitwise_or(dst, mask, dst); //合并mask}

423776537@qq.com

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com