时间:2021-05-22
做图像识别的时候需要在图片中画出特定大小和角度的矩形框,自己写了一个函数,给定的输入是图片名称,矩形框的位置坐标,长宽和角度,直接输出画好矩形框的图片。
主要思想是先根据x,y坐标和长宽得到矩形,然后通过数学计算得到旋转angle角度后的新矩形框的四个顶点位置坐标,再利用draw.line()函数画出来。
改写成c++
由于c++程序也需要用到这个程序,改写一下
void CopentestDlg::OnBnClickedAnaly(){ CString x,y,angle,width; float xRaw[4], yRaw[4]; float xNew[4], yNew[4]; float height = 33; if (imageCut==NULL) { AfxMessageBox(_T("未打开图片不能分析")); return; } GetDlgItem(IDC_EX)->GetWindowText(x); GetDlgItem(IDC_EY)->GetWindowText(y); GetDlgItem(IDC_ANGLE)->GetWindowText(angle); GetDlgItem(IDC_WIDTH)->GetWindowText(width); float xf = _tstof(x); //将Cstring转成float类型 float yf = _tstof(y); float widthf= _tstof(width); float anglef= _tstof(angle); xRaw[1] = xf - 0.5*widthf; yRaw[1] = yf - 0.5*height; xRaw[0] = xf + 0.5*widthf; yRaw[0] = yRaw[1]; xRaw[2] = xRaw[1]; yRaw[2] = yf + 0.5*height; xRaw[3] = xRaw[0]; yRaw[3] = yRaw[2]; float anglePi = -anglef*pi / 180.0; float cosA = cos(anglePi); float sinA = sin(anglePi); xNew[0] = (xRaw[0] - xf)*cosA - (yRaw[0] - yf)*sinA + xf; yNew[0] = (xRaw[0] - xf)*sinA + (yRaw[0] - yf)*cosA + yf; xNew[1] = (xRaw[1] - xf)*cosA - (yRaw[1] - yf)*sinA + xf; yNew[1] = (xRaw[1] - xf)*sinA + (yRaw[1] - yf)*cosA + yf; xNew[2] = (xRaw[2] - xf)*cosA - (yRaw[2] - yf)*sinA + xf; yNew[2] = (xRaw[2] - xf)*sinA + (yRaw[2] - yf)*cosA + yf; xNew[3] = (xRaw[3] - xf)*cosA - (yRaw[3] - yf)*sinA + xf; yNew[3] = (xRaw[3] - xf)*sinA + (yRaw[3] - yf)*cosA + yf; cvLine(imageCut, cvPoint(xNew[0], yNew[0]), cvPoint(xNew[1], yNew[1]), cvScalar(0, 0, 255), 3); cvLine(imageCut, cvPoint(xNew[1], yNew[1]), cvPoint(xNew[2], yNew[2]), cvScalar(255, 0, 0), 3); cvLine(imageCut, cvPoint(xNew[2], yNew[2]), cvPoint(xNew[3], yNew[3]), cvScalar(0, 0, 255), 3); cvLine(imageCut, cvPoint(xNew[0], yNew[0]), cvPoint(xNew[3], yNew[3]), cvScalar(255, 0, 0), 3); DrawPicToHDC(imageCut, IDC_Cut); pEdit->ReplaceSel(_T("图片已修改\r\n"));}效果图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了pythonopencv实现旋转矩形框裁减的具体代码,供大家参考,具体内容如下经常遇见旋转矩形框的裁减问题,那么思路是,将矩形框旋转正然后再
有时候需要对有角度的矩形框内图像从原图片中分割出来。这里的程序思想是,先将图片进行矩形角度的旋转,使有角度的矩形处于水平状态后,根据原来坐标分割图片。参考:py
本文实例为大家分享了Android自定义View拖拽缩放矩形框的具体代码,供大家参考,具体内容如下在开发项目中,需要一个矩形框来实现截屏功能,并且还需要可以任意
本文实例讲述了AngularJS实现的鼠标拖动画矩形框。分享给大家供大家参考,具体如下:Titlehtml{color:#000;overflow-y:scol
coreldraw9设计名片的操作如下: 1、新建一个文件来制作名片效果,用“矩形工具”在绘图页面上绘制一个大小为90.0mm乘55.0mm的矩形框,填充任意